/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.uch.biblioteca.managedBeans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.event.ActionEvent;
import net.uch.biblioteca.hibernateSpringDao.HSBibCatalogoDetalleDAO;
import net.uch.biblioteca.hibernateSpringDao.HSBibLectorDAO;
import net.uch.biblioteca.hibernateSpringDao.HSBibPrestamoDAO;
import net.uch.biblioteca.mapping.BibCatalogoDetalle;
import net.uch.biblioteca.mapping.BibPrestamo;
import net.uch.util.CommonDAO;
import java.util.Date;
import javax.faces.component.UIParameter;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import net.uch.biblioteca.hibernateSpringDao.*;
import net.uch.biblioteca.mapping.BibDevolucion;
import net.uch.biblioteca.mapping.BibUsuario;

/**
 *
 * @author Vasquez
 */
public class mbDevolucionSancion {

    private String sLec_codigo;
    private List<mbPrestamo> prestamos = new ArrayList<mbPrestamo>();
    private String oncomplete;
    private Date fecDev;
    private String obsDev = "";
    private int iPreId;
    BibUsuario usu;

    // SETTER Y GETTER
    public BibUsuario getUsu() {
        return usu;
    }

    public void setUsu(BibUsuario usu) {
        this.usu = usu;
    }

    public int getiPreId() {
        return iPreId;
    }

    public void setiPreId(int iPreId) {
        this.iPreId = iPreId;
    }

    public Date getFecDev() {
        return fecDev;
    }

    public void setFecDev(Date fecDev) {
        this.fecDev = fecDev;
    }

    public String getObsDev() {
        return obsDev;
    }

    public void setObsDev(String obsDev) {
        this.obsDev = obsDev;
    }

    public String getOncomplete() {
        return oncomplete;
    }

    public void setOncomplete(String oncomplete) {
        this.oncomplete = oncomplete;
    }

    public List<mbPrestamo> getPrestamos() {
        return prestamos;
    }

    public void setPrestamos(List<mbPrestamo> prestamos) {
        this.prestamos = prestamos;
    }

    public String getsLec_codigo() {
        return sLec_codigo;
    }

    public void setsLec_codigo(String sLec_codigo) {
        this.sLec_codigo = sLec_codigo;
    }

    public String ListarPrestamosxLector() throws Exception {
        int Lec_id = 0;

        HSBibLectorDAO daoLec = CommonDAO.getBibLectorDAO();
        HSBibCatalogoDetalleDAO daodet = CommonDAO.getBibCatalogoDetalleDAO();
        HSBibPrestamoDAO daoPre = CommonDAO.getBibPrestamoDocDAO();
        List lstPrestamos = new ArrayList();
        int idCatDoc = 0;
        List<BibCatalogoDetalle> lstdet;

        if (daoLec.lectorxCodigo(this.sLec_codigo) != null) {
            Lec_id = daoLec.lectorxCodigo(this.sLec_codigo).getLecId();
            lstPrestamos = daoPre.traerPrestamosxLector(Lec_id);
        }



        this.prestamos = new ArrayList<mbPrestamo>();
        String Doctit2 = "";
        String Doctit = "";
        for (int i = 0; i < lstPrestamos.size(); i++) {

            mbPrestamo prestamo = new mbPrestamo(0);

            if (((BibPrestamo) lstPrestamos.get(i)).getPreTip().equals("002001")) {
                prestamo.setsPreTip("SALA");
            } else {
                prestamo.setsPreTip("DOMICILIO");
            }

            idCatDoc = daodet.traerCatDocumento(((BibPrestamo) lstPrestamos.get(i)).getBibEjemplar().getCatEje()).getCatId();
            lstdet = daodet.traerTituloDoc(idCatDoc);

            Doctit2 = lstdet.get(0).getMarCont().substring(2, lstdet.get(0).getMarCont().length());

            String[] detalleseparado = Doctit2.split("\\^");
            for (int u = 0; u < detalleseparado.length; u++) {
                if (detalleseparado[u].length() == 0) {
                    Doctit += " ";
                } else {
                    if (u == 0) {
                        Doctit = detalleseparado[u];
                    } else {
                        Doctit += "/" + detalleseparado[u].substring(1, detalleseparado[u].length());
                    }

                }

            }
            
            prestamo.setiPreId(((BibPrestamo) lstPrestamos.get(i)).getPreId());
            prestamo.setsDocTit(Doctit);
            prestamo.setdFecRes(((BibPrestamo) lstPrestamos.get(i)).getPreFecActual());
            prestamo.setdFecDev(((BibPrestamo) lstPrestamos.get(i)).getPreFecProdev());

            prestamos.add(prestamo);
        }
        return "";
    }

    public void devolverDoc(ActionEvent event) throws Exception {
        this.setFecDev(new Date());
        this.setObsDev("");

        int id_update = Integer.parseInt(((UIParameter) event.getComponent().findComponent("id_update")).getValue().toString());
        this.setiPreId(id_update);

        this.setOncomplete("Richfaces.showModalPanel('mpDevolucion')");
    }

    public void guardarDevolucion(ActionEvent event) throws Exception {

        this.setOncomplete("");
        HSBibPrestamoDAO daopre = CommonDAO.getBibPrestamoDocDAO();
        HSBibEjemplarDAO daoeje = CommonDAO.getBibEjemplarDAO();
        HSBibDevolucionDAO daodev = CommonDAO.getDevolucionDAO();

        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        HttpSession session = (HttpSession) context.getSession(true);
        usu = (BibUsuario) session.getAttribute("usuario");

        BibDevolucion dev = new BibDevolucion();
        dev.setPejId(daopre.buscarPrestamoPorId(iPreId).getBibEjemplar().getEjeId());
        dev.setDevFec(fecDev);
        dev.setDevObs(obsDev);
        dev.setBibPrestamo(new BibPrestamo(iPreId));
        dev.setBibUsuario(new BibUsuario(usu.getUsuId()));
        dev.setDevEst("1".charAt(0));
                
        daodev.guardarDevolucion(dev);

        // DESACTIVA EL PRESTAMO
        daopre.devolverPrestamo(iPreId, fecDev);
        //VUELVE DISPONIBLE EL EJEMPLAR DEVUELTO
        daoeje.actualizarEjemplar(daopre.buscarPrestamoPorId(iPreId).getBibEjemplar().getEjeId(), "0");
        // guardar devolucion
        this.setOncomplete("javascript:alert('Devolucion Satisfactorias.');Richfaces.hideModalPanel('mpDevolucion')");
    }
}
